package com.jdbc.dogcrud;

import com.jdbc.entity.Dog;
import com.jdbc.utils.JDBCUtils;
import org.junit.Test;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author wzm
 * @create 2023-09-06 10:47
 * project_name:javaweb2308
 */
//测试Dog的增伤改查
public class DogCrud {
    private Connection conn = null;
    private PreparedStatement pst = null;
    private ResultSet resultSet = null;


    //新增dog
    @Test
    public void add(){
        try {
            //1.打开数据库连接
             conn = JDBCUtils.getConn();

            //2.书写sql语句  使用问号占位
            String sql = "insert into dog values(?,?,?,?)";

            //3.获得执行sql的对象
            //Statement statement = conn.createStatement(); //sql注入问题 sql直接拼接的

            //先把sql预编译 然后使用方法将参数放进预编译的sql中
            pst = conn.prepareStatement(sql);

            //为之前的？参数赋值
            pst.setInt(1,0);//第一个问号  值为0
            pst.setString(2,"塞班");
            pst.setInt(3,10);
            pst.setString(4,"公");


            //4.执行sql并返回结果 executeUpdate 用于增删改sql的执行
            int i = pst.executeUpdate();


            //5.处理返回的结果
            System.out.println("增加的数据条数：  " + i);


        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6.关闭资源
            JDBCUtils.closes(conn , pst,null);
        }

    }


    @Test
    public void find (){
        try {
            //1.打开数据库连接
            conn = JDBCUtils.getConn();

            //2.书写sql语句  使用问号占位
            String sql = "select * from dog";

            //先把sql预编译 然后使用方法将参数放进预编译的sql中
            pst = conn.prepareStatement(sql);

            //执行并返回结果  结果集是虚拟表 需要通过提供的api将数据取出来
            resultSet = pst.executeQuery();

            List<Dog> list = new ArrayList<>();
            // next方法 让光标往下移动一行  如果有值 返回true 反之false
            Dog dog = null;
            while(resultSet.next()){
                //取值
                dog = new Dog();
                dog.setId(resultSet.getInt("id"));
                dog.setName(resultSet.getString("name"));
                dog.setAge(resultSet.getInt("age"));
                dog.setSex(resultSet.getString("sex"));
                list.add(dog);
            }

            System.out.println("list = " + list);

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
          JDBCUtils.closes(conn,pst,resultSet);
        }

    }

    //查询单个根据id
}
